/*
 * Copyright (c) 2003-2005
 * XDoclet Team
 * All rights reserved.
 */
package org.xdoclet.plugin.hibernate.qtags;

import org.xdoclet.plugin.hibernate.qtags.parameter.*;

/**
 * declare property to be hibernate component. A component is a user-defined class, persisted
 * along with its containing entity to the table of the entity class. JavaBeans
 * style properties of the component are mapped to columns of the table of the
 * containing entity.
 *
 * @qtags.location field
 * @qtags.location method
 */
public interface HibernateComponentTag extends com.thoughtworks.qdox.model.DocletTag, Clazz, Unique, Update, Insert, Lazy,
    Node, PropertiesName, Access, JoinName {
    /**
     * Specifies that updates to this component do or do not require acquisition of the optimistic lock.
     * In other words, determines if a version increment should occur when this property is dirty.
     */
    Boolean getOptimisticLock();

    /**
     * When multiple Java fields are of the same component datatype, use this to specify a descriminating
     * column-name-prefix. Properties that are included which have a \@hibernate.property column="xxx"
     * attribute or \@hibernate.column name="xxx" on the property will be prefixed.
     */
    String getPrefix();
}